var sequelize = require('./db');
var { DataTypes } = require('sequelize');

const DEFAULT_HEAD_IMAGE =
	'https://5b0988e595225.cdn.sohucs.com/images/20171114/bc48840fb6904dd4bd8f6a8af8178af4.png';

const User = sequelize.define('user', {
	id: {
		type: DataTypes.INTEGER,
		primaryKey: true,
		autoIncrement: true,
	},
	username: {
		type: DataTypes.STRING,
		allowNull: false,
	},
	password: {
		type: DataTypes.STRING,
		allowNull: false,
	},
	token: {
		type: DataTypes.TEXT,
	},
});

const UserInfo = sequelize.define('user_info', {
	id: {
		type: DataTypes.INTEGER,
		primaryKey: true,
		autoIncrement: true,
	},
	nickname: {
		type: DataTypes.STRING,
		defaultValue: '请完善昵称',
	}, // 昵称
	profilePhoto: {
		type: DataTypes.TEXT,
		defaultValue: DEFAULT_HEAD_IMAGE,
	}, // 头像
	birthday: {
		type: DataTypes.STRING,
		allowNull: true,
	}, // 生日
	sex: {
		type: DataTypes.INTEGER,
		allowNull: true,
	}, // 性别
	age: {
		type: DataTypes.INTEGER,
		allowNull: true,
	}, // 年龄
	email: {
		type: DataTypes.STRING,
		allowNull: true,
	}, // 邮箱
	mobile: {
		type: DataTypes.STRING,
		allowNull: true,
	}, // 手机号
	address: {
		type: DataTypes.STRING,
		allowNull: true,
	}, // 地址
	personalizedSignature: {
		type: DataTypes.STRING,
		allowNull: true,
		defaultValue: '这个人很懒，什么也没留下',
	}, // 个性签名
	label: {
		// 标签
		type: DataTypes.ARRAY(DataTypes.STRING),
		allowNull: true,
	},
	position: {
		type: DataTypes.STRING,
		allowNull: true,
	},
	company: {
		type: DataTypes.STRING,
		allowNull: true,
	},
});

User.hasOne(UserInfo);
UserInfo.belongsTo(User);

sequelize
	.sync()
	.then(() => {
		console.log('数据库模型同步成功');
	})
	.catch((error) => {
		console.error('数据库模型同步失败:', error);
	});

module.exports = {
	User,
	UserInfo,
};
